#ifndef _Game
#define _Game

#include <iostream>
#include <sstream>
#include <string>
#include <map>
#include "Dealer.h"

class Dealer;
class Player;
class QtApp;

using namespace std;

class Game
{
	public :
		/* data */
		//Première connexion des joueurs
		int firstConnexion[2];
		// Nombre de même partie réalisé
		int numeroOfGame;
		//Correspond à l'état de la partie, a modifié et déplacé
		int distributeCard;
		//Quand aucun joueur ou un seul à jouer sur un coup la variable est à 0
		//Quand les deux joueur on jouer sur un coup alors la variable est à 1
		int twoPlayerOnPlay;//deuxOnJouer = 0;
		//0= partie en cours, 1= partie fini
		int endGame;
		//Toute les cartes du jeu
		map <int,Card> cards;
		//Liste des joeurs de la partie
		map <int,Player> players;
		//Dealer du jeu
		Dealer dealer;
		//Interface de la partie
		NetWorkInterface ie;
		//Joueur gagnant la partie
		int winner;// 1= joueur1, 2= joueur 2
		//Joueur courant de la partie
		int currentPlayer; // 1 = joueur 1 ou  2 = joueur 2

		/* *fonction */
		int getwinner(map <int,Player> &player);
		// function of the singleton
		static Game * getGame(string ipj1,string ipj2,string port1,string iport2);
		void messageEndGame(map <int,Player> &player);
		void attributPot(Player &player1,Player &player2);
		int plusFaiblemain(Player &player1,Player &player2);
		void actionJoueur(Player &player,QtApp *app);
		void updateAllValuesPlayers();
		static Game * getGame();

};

#endif
